package br.com.bacabeleireiros.sysbeleza.dao.impl;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Query;

import org.springframework.stereotype.Repository;

import br.com.bacabeleireiros.sysbeleza.dao.IVendaProdutoDAO;
import br.com.bacabeleireiros.sysbeleza.entity.VendaProduto;
import br.com.bacabeleireiros.util.persistence.impl.GenericDAOImpl;

@Repository
public class VendaProdutoDAOImpl extends GenericDAOImpl<VendaProduto, Serializable> implements IVendaProdutoDAO, Serializable {

	private static final long serialVersionUID = 1L;

	public VendaProdutoDAOImpl() {
		
	}

	@Override
	public VendaProduto salva(VendaProduto vendaProduto) {
		return save(vendaProduto);
	}

	@Override
	public List<VendaProduto> getListaVendaProdutoCliente(Long idCliente) {
		if (idCliente == null) {
			idCliente = 0L;
		}
		String SQL = " from VendaProduto a "
				   + "where a.cliente.idCliente = ? "
				   + "  and not exists ( from CaixaMovimentoVendaProduto vp "
				   + "                  where vp.vendaProduto.idVendaProduto = a.idVendaProduto) "
				   + "order by a.cliente.nome, a.dataVenda";
		Query query = em.createQuery(SQL);
		query.setParameter(1, idCliente);
		return query.getResultList();
	}

	@Override
	public List<VendaProduto> getListaVendaProduto() {
		String SQL = " from VendaProduto a "
				   + "where not exists ( from CaixaMovimentoVendaProduto vp "
				   + "                  where vp.vendaProduto.idVendaProduto = a.idVendaProduto) "
				   + "order by a.cliente.nome, a.dataVenda";
		Query query = em.createQuery(SQL);
		return query.getResultList();
	}

}
